import fs from 'fs';
import path from 'path';
import createDirectory from './createDirectory';


/**
 * 创建文件
 *
 * 此函数用于在指定路径创建文件，并写入指定的数据。如果目标路径的目录不存在，会先创建目录。
 * 如果文件已存在且未启用强制覆盖模式，则会输出警告并跳过写入操作。
 *
 * @param filePath - 文件的完整路径，例如 'D:\\example\\file.txt'
 * @param data - 要写入文件的数据，必须是 Buffer 类型
 * @param force - 是否强制覆盖已存在的文件，默认为 false
 */
function createFile(filePath: string, data: Buffer, force: boolean = false): void {
    // 获取文件所在目录路径
    const dirPath = path.dirname(filePath);

    // 创建目录（如果目录不存在）
    createDirectory(dirPath);

    // 检查文件是否存在
    if (!force && fs.existsSync(filePath)) {
        // 如果文件已存在且未启用强制覆盖模式，则输出警告并返回
        console.warn(`文件已存在，路径为：${filePath}`);
        return;
    }

    // 写入文件内容
    fs.writeFileSync(filePath, data);
}


export default createFile;